<?php

/**
 * controler para facturas
 *
 * @author jreyes
 */



require_once 'class/so/facturas/DP/ArFacturaDP.class.php';
require_once 'class/so/facturas/DP/ArFacturaLineaDP.class.php';
require_once 'class/so/facturas/FN/ArFacturaFN.class.php';
require_once 'class/so/facturas/FN/ArFacturaLineaFN.class.php';
require_once 'class/common/mc/FN/XxMaestroListaFN.class.php';
//require_once 'class/im/alm/FN/ImAlmacenFN.class.php'; 


class SoFacturaController extends ControllerBase
{
	
	public function contenedor(){		
	   $o_ArFacturaFN= new ArFacturaFN();       		
	   $page       = isset($this->requestVars['page']) ? $this->requestVars['page'] : 1;
	   $rp         = isset($this->requestVars['rp']) ? $this->requestVars['rp'] : 10;
	   $sortname   = isset($this->requestVars['sortname']) ? $this->requestVars['sortname'] : 'name';
	   $sortorder  = isset($this->requestVars['sortorder']) ? $this->requestVars['sortorder'] : 'desc';		
	   $o_ArFacturaFN->page = $page;
	   $o_ArFacturaFN->tamPag = $rp;
	   $o_ArFacturaFN->sortCampos = $sortname;
	   $o_ArFacturaFN->sortType   = $sortorder;
        if ($this->requestVars){
            if (array_key_exists('facId', $this->requestVars)) {
                $o_ArFacturaFN->setfacId($this->requestVars["facId"]) ;   
            }
            if (array_key_exists('clienteNombre', $this->requestVars)) {
                $o_ArFacturaFN->setClienteNombre($this->requestVars["clienteNombre"]);  
            }      
            if (array_key_exists('status', $this->requestVars)) {
                $o_ArFacturaFN->setStatus($this->requestVars["status"]);  
            }                     
        }
        $result = $o_ArFacturaFN->select();     
        $vars['result'] = $result;
        $vars['facturaFN'] = $o_ArFacturaFN;
        if (array_key_exists('modoBusqueda', $this->requestVars)) {
            $vars['modoBusqueda'] = $this->requestVars["modoBusqueda"];
        }else{
            $vars['modoBusqueda'] = "";
        }
        $this->view->show("so/facturas/contenedor",$vars);		
	}

     
    public function listar(){
        if (!isset($vars)){
		$vars = '';
        }        
        $this->view->show("so/facturas/listar",$vars);
    }
    
    
    public function shw(){
        $this->shwForm("view");
    }
    
      
    public function nuevo(){           
        $o_XxXxMaestroListaFN = new XxMaestroListaFN();        
        $o_XxXxMaestroListaFN->setListaId('estFactVta');
        $ao_EstadoFactura = $o_XxXxMaestroListaFN->select();        
        $o_XxXxMaestroListaFN->setListaId('monedaPO');
        $ao_Moneda        = $o_XxXxMaestroListaFN->select();        
        $o_XxXxMaestroListaFN->setListaId('frmPagVts');
        $ao_PagVts        = $o_XxXxMaestroListaFN->select();       
        $a_Maestros['Moneda']             = $ao_Moneda;
        $a_Maestros['estadoFactura']      = $ao_EstadoFactura;        
        $a_Maestros['PagVts']             = $ao_PagVts;        
        $vars['a_Maestros']               = $a_Maestros;
        $this->view->show("so/facturas/nuevo",$vars);   
    }
    
    
    public function editar(){
       if ($this->requestVars)
       {   
          if (array_key_exists('facId', $this->requestVars)) 
          {     
            $o_ArFacturaFN = new ArFacturaFN();
            $o_ArFacturaFN->setfacId($this->requestVars["facId"]);
            $o_ArFacturaBN = $o_ArFacturaFN->getArFactura();        
            $o_XxXxMaestroListaFN = new XxMaestroListaFN();            
            $o_XxXxMaestroListaFN->setListaId('estFactVta');
            $ao_EstadoFactura = $o_XxXxMaestroListaFN->select();            
            $o_XxXxMaestroListaFN->setListaId('monedaPO');
            $ao_Moneda      = $o_XxXxMaestroListaFN->select();            
            $o_XxXxMaestroListaFN->setListaId('frmPagVts');
            $ao_PagVts     = $o_XxXxMaestroListaFN->select();
            $a_Maestros['o_ArFacturaBN']  = $o_ArFacturaBN;
            $a_Maestros['Moneda']         = $ao_Moneda;
            $a_Maestros['estadoFactura']  = $ao_EstadoFactura;      
            $a_Maestros['PagVts']         = $ao_PagVts;        
            $vars['a_Maestros']           = $a_Maestros;
            $this->view->show("so/facturas/editar",$vars); 
          }
       }      
    }
    
    public function editarSave()
    {
      try 
      {
        if ($this->requestVars){
              $o_ArFacturaDP                = new ArFacturaDP();
              $o_ArFacturaDP->setfacId($this->requestVars["facId"]);
              $o_ArFacturaDP->eliminarSoFacturaCabeceraDetalle();                         
              $o_ArFacturaDP->setTipo($this->requestVars["tipo"]);
              $o_ArFacturaDP->setNum($this->requestVars["facNro"]);
              $o_ArFacturaDP->setVendedorId($this->requestVars["vendedorId"]);
              $o_ArFacturaDP->setDocReferNum($this->requestVars["docRef"]);
              $o_ArFacturaDP->setClienteId($this->requestVars["clienteId"]);
              $o_ArFacturaDP->setClienteNombre($this->requestVars["clienteNombre"]);
              $o_ArFacturaDP->setContacto($this->requestVars["contacto"]);
              $o_ArFacturaDP->setTerms($this->requestVars["pagVts"]);
              $o_ArFacturaDP->setMoneda($this->requestVars["moneda"]);
              $o_ArFacturaDP->setFecha($this->requestVars["fechaReq"]);
              $o_ArFacturaDP->setFechaVcto($this->requestVars["fechaVcto"]);
              $o_ArFacturaDP->setObs($this->requestVars["obs"]);
              
              $o_ArFacturaDP->update();
              
              if($this->requestVars["a_ItemId"] )
              {
                  $i=1;
                  foreach ($this->requestVars["a_ItemId"] as $iKey => $value)
                  {
                    $o_ArFacturaLineaDP = new ArFacturaLineaDP();
                 
                    $o_ArFacturaLineaDP->setfacId($o_ArFacturaDP->getfacId());	      
                    $o_ArFacturaLineaDP->setLineaId($i);               
                    $o_ArFacturaLineaDP->setArtId($this->requestVars["a_ItemId"][$iKey]);                        
                    $o_ArFacturaLineaDP->setCant($this->requestVars["a_Cant"][$iKey]);
                    $o_ArFacturaLineaDP->setPrecio($this->requestVars["a_Precio"][$iKey]);
                    $o_ArFacturaLineaDP->setCreaFecha(date('Y-m-d'));
                    $o_ArFacturaLineaDP->save();
                    
                    $i++;
                  }
              }
              $a_result['rpta'] = 'true';
              $a_result['msg'] = '';
              $a_result['facId'] = $this->requestVars["facId"];
              
          }
      }catch (Exception $e)
      {
        $a_result['rpta'] = 'false';
        $a_result['msg'] = $e->getMessage().' en '.$e->getFile().' linea '.$e->getLine();        
      }
      
      echo json_encode($a_result);
    
    }
    
    public function guardarSave()
    {
      try 
      {
        if ($this->requestVars){
              $o_ArFacturaDP                = new ArFacturaDP();
              $o_ArFacturaDP->setTipo($this->requestVars["tipo"]);
              $o_ArFacturaDP->setNum($this->requestVars["facNro"]);
              $o_ArFacturaDP->setVendedorId($this->requestVars["vendedorId"]);
              $o_ArFacturaDP->setDocReferNum($this->requestVars["docRef"]);
              $o_ArFacturaDP->setClienteId($this->requestVars["clienteId"]);
              $o_ArFacturaDP->setClienteNombre($this->requestVars["clienteNombre"]);
              $o_ArFacturaDP->setContacto($this->requestVars["contacto"]);
              $o_ArFacturaDP->setTerms($this->requestVars["pagVts"]);
              $o_ArFacturaDP->setMoneda($this->requestVars["moneda"]);
              $o_ArFacturaDP->setFecha($this->requestVars["fechaReq"]);
              $o_ArFacturaDP->setFechaVcto($this->requestVars["fechaVcto"]);
              $o_ArFacturaDP->setObs($this->requestVars["obs"]);              
              $o_ArFacturaDP->save();
              if($this->requestVars["a_ItemId"] )
              {
                  $i=1;
                  foreach ($this->requestVars["a_ItemId"] as $iKey => $value)
                  {
                    $o_ArFacturaLineaDP = new ArFacturaLineaDP();
                 
                    $o_ArFacturaLineaDP->setfacId($o_ArFacturaDP->getfacId());	      
                    $o_ArFacturaLineaDP->setLineaId($i);               
                    $o_ArFacturaLineaDP->setArtId($this->requestVars["a_ItemId"][$iKey]);                        
                    $o_ArFacturaLineaDP->setCant($this->requestVars["a_Cant"][$iKey]);
                    $o_ArFacturaLineaDP->setPrecio($this->requestVars["a_Precio"][$iKey]);
                    $o_ArFacturaLineaDP->setCreaFecha(date('Y-m-d'));
                    $o_ArFacturaLineaDP->save();
                    
                    $i++;
                  }
              }
              $a_result['rpta'] = 'true';
              $a_result['msg'] = '';
              $a_result['facId'] = $o_ArFacturaDP->getfacId();
              
          }
      }catch (Exception $e)
      {
        $a_result['rpta'] = 'false';
        $a_result['msg'] = $e->getMessage().' en '.$e->getFile().' linea '.$e->getLine();        
      }
      
      echo json_encode($a_result);
    
    }
}
?>